package com.wl.cloud.system.service;

import com.wl.cloud.core.dto.DataStoreDTO;
import com.wl.cloud.system.domain.SysUserRole;
import com.wl.cloud.system.support.dto.SysUserRoleDTO;
import com.wl.cloud.system.support.dto.query.SysUserRoleQueryDTO;
import com.wl.cloud.system.support.vo.SysUserRoleVO;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;

import java.util.List;
import java.util.Set;

/**
 * 用户角色表 前端控制器
 *
 * @author wanglin
 * @since 2023-09-18
 */
public interface SysUserRoleService {

    /**
     * 分页
     *
     * @param pageable
     * @param queryDto
     * @return
     */
    DataStoreDTO<SysUserRoleVO> page(Pageable pageable, SysUserRoleQueryDTO queryDto);

    /**
     * 列表
     *
     * @param sort
     * @param queryDto
     * @return
     */
    List<SysUserRoleVO> list(Sort sort, SysUserRoleQueryDTO queryDto);

    /**
     * 保存
     *
     * @param dto
     */
    void save(SysUserRoleDTO dto);

    /**
     * 更新
     *
     * @param dto
     */
    void update(SysUserRoleDTO dto);

    /**
     * 查看
     *
     * @param id
     * @return
     */
    SysUserRoleVO get(String id);

    /**
     * 删除
     *
     * @param ids
     */
    void delete(Set<String> ids);

    /**
     * 根据用户id 获取角色ids
     *
     * @param userId
     * @return
     */
    List<String> getRoleIdsByUserId(String userId);

    /**
     * 根据userId获取用户角色、权限信息
     *
     * @param userId
     * @return
     */
    String getAuthoritiesByUserId(String userId);

    /**
     * 根据角色ids 获取用户角色
     *
     * @param roleIds
     * @return
     */
    List<SysUserRole> getListByRoleIds(Set<String> roleIds);

    /**
     * 根据用户主键id删除角色
     *
     * @param userIds
     */
    void deleteByUserIds(Set<String> userIds);
}
